/****************************************
*  This file created using "Writer B"   *
*      a program written by CTonk       *
*          ctonk87@hotmail.com          *
*     [timestamp 03/04/06  15:17:35]    *
****************************************/

// Creature.h

#ifndef H_CREATURE
#define H_CREATURE


class Creature // Base class for Character and all mobiles
{
	protected:
		// _socket, _gotinput, _connected, and their respective public
		// accessor methods had to be percolated up from class Character
		// due to the World::HandleInput() function.
		Socket*		_socket;
		bool		_gotinput;
		bool		_connected;

		Magiclist< Object* > _inventory;

		char*	_name; // Array set with length 30
		char*	_prompt;
		int		_race;
		int		_class;
		int		_goldheld;
		int		_silverheld;
		int		_pos;
		Room*	_room;
		int		_level;
		int		_mstr;
		int		_str;
		int		_mdex;
		int		_dex;
		int		_mcon;
		int		_con;
		int		_mintel;
		int		_intel;
		int		_mwis;
		int		_wis;
		int		_mhp;
		int		_hp;
		int		_mmana;
		int		_mana;
		int		_mmove;
		int		_move;
		int		_ac;
		int		_acbash;
		int		_acslash;
		int		_acpierce;
		int		_acexotic;
		int		_hr;
		int		_dr;
		int		_saves;
		int		_wimpy;
		int		_gender;
		int		_height;
		int		_weight;
		int		_witems;
		int		_age;

	public:
		// Constructors...
		Creature();
		Creature( Creature& );
		~Creature();

		// Operators...
		Creature& operator = ( Creature& );

		// Public accessor methods...
		Socket* GetSocket();
		void SetSocket( Socket* );
		bool GetGotinput();
		void SetGotinput( bool );
		bool GetConnected();
		void SetConnected( bool );

		Magiclist< Object* >& GetInventory();
		Object*	GetObject( int );
		Object*	Add( Object* );
		void	Remove( Object* );

		char*	GetName( void );
		char	GetName( int );
		void	SetName( char* );
		void	SetName( const char* );
		void	SetName( int, char );
		char*	GetPrompt( void );
		int		GetRace();
		void	SetRace( int );
		int		GetClass();
		void	SetClass( int );
		int		GetGoldheld();
		void	SetGoldheld( int );
		int		GetSilverheld();
		void	SetSilverheld( int );
		int		GetPos();
		void	SetPos( int );
		Room*	GetRoom();
		void	SetRoom( int );
		int		GetLevel();
		void	SetLevel( int );
		int		GetMstr();
		void	SetMstr( int );
		int		GetStr();
		void	SetStr( int );
		int		GetMdex();
		void	SetMdex( int );
		int		GetDex();
		void	SetDex( int );
		int		GetMcon();
		void	SetMcon( int );
		int		GetCon();
		void	SetCon( int );
		int		GetMintel();
		void	SetMintel( int );
		int		GetIntel();
		void	SetIntel( int );
		int		GetMwis();
		void	SetMwis( int );
		int		GetWis();
		void	SetWis( int );
		int		GetMhp();
		void	SetMhp( int );
		int		GetHp();
		void	SetHp( int );
		int		GetMmana();
		void	SetMmana( int );
		int		GetMana();
		void	SetMana( int );
		int		GetMmove();
		void	SetMmove( int );
		int		GetMove();
		void	SetMove( int );
		int		GetAc();
		void	SetAc( int );
		int		GetAcbash();
		void	SetAcbash( int );
		int		GetAcslash();
		void	SetAcslash( int );
		int		GetAcpierce();
		void	SetAcpierce( int );
		int		GetAcexotic();
		void	SetAcexotic( int );
		int		GetHr();
		void	SetHr( int );
		int		GetDr();
		void	SetDr( int );
		int		GetSaves();
		void	SetSaves( int );
		int		GetWimpy();
		void	SetWimpy( int );
		int		GetGender();
		void	SetGender( int );
		int		GetHeight();
		void	SetHeight( int );
		int		GetWeight();
		void	SetWeight( int );
		int		GetWitems();
		void	SetWitems( int );
		int		GetAge();
		void	SetAge( int );

		// Other methods...
		void	FlushOutput();
		void	Send( const std::string& );
		void	Send( char*, ... );
		void	Set( char*, int, int );
		void	Set( std::string&, int, int );
		void	Display( std::ostream& );
		void	Display( std::string& );
		void	Csave( std::ofstream& );
		void	Cload( std::ifstream& );
};


#endif // #ifndef H_CREATURE